home *** CD-ROM | disk | FTP | other *** search
/ Internet Magazine 2001 February / Internet Magazine February 2001.iso / mac / SOFTWARE / MAC / UTILITIES / NETFINDER / NETFINDER.HQX / NetFinder v2.2b5 / Scripts / Support - Dump TCP Status / oS
Encoding:
Text File  |  2000-11-04  |  12.3 KB  |  357 lines

  1. /* 
  2.     Sample ICI script for NetFinder.
  3.     
  4.     This script dumps out TCP/UDP stats of the machine at the time of running.
  5.     
  6.     The purpose of this script is for technical support when things are not
  7.     working... you can also use it for other purposes.
  8.     
  9.     NOTES:
  10.     o Full ICI programming syntax can be obtained from
  11.       <http://www.zeta.org.au/~atrn/ici/documentation.html>
  12.     
  13.     (c) Copyright 2000 Peter Li.
  14.  */
  15.  
  16. NFLoadModuleConstants();
  17.  
  18. extern TCP_STATUS_REGEXP = $regexp("^[^ ]+ ([0-9\\.]+) .*\\[([A-Fa-f0-9]+),([A-Fa-f0-9]+)\\] ([^ ]+) +$");
  19. extern UDP_STATUS_REGEXP = $regexp("^[^ ]+ ([0-9]+) ([0-9\\.]+) ([0-9\\.]+) ([0-9\\.]+) ([0-9]+) ([^ ]+)$");
  20. auto outputFilename = "Raw_Status.dat";
  21.  
  22.  
  23. extern
  24. PortToEnglishStr(inPort)
  25. {
  26.     auto result;
  27.     
  28.     result = string(inPort);
  29.     
  30.     switch(inPort)
  31.     {
  32.         case 0:        result = "any";            break;
  33.         case 1:        result = "tcpmux";        break;
  34.         case 7:        result = "echo";        break;
  35.         case 9:        result = "discard";        break;
  36.         case 11:    result = "systat";        break;
  37.         case 13:    result = "daytime";        break;
  38.         case 15:    result = "netstat";        break;
  39.         case 17:    result = "qotd";        break;
  40.         case 18:    result = "msp";            break;
  41.         case 19:    result = "chargen";        break;
  42.         case 20:    result = "ftpdata";        break;
  43.         case 21:    result = "ftp";            break;
  44.         case 22:    result = "ssh";            break;
  45.         case 23:    result = "telnet";        break;
  46.         case 25:    result = "smtp";        break;
  47.         case 37:    result = "time";        break;
  48.         case 39:    result = "rlp";            break;
  49.         case 42:    result = "nameserver";    break;
  50.         case 43:    result = "whois";        break;
  51.         case 50:    result = "re-mail-ck";    break;
  52.         case 53:    result = "domain";        break;
  53.         case 57:    result = "mtp";            break;
  54.         case 67:    result = "bootps";        break;
  55.         case 68:    result = "bootpc";        break;
  56.         case 69:    result = "tftp";        break;
  57.         case 70:    result = "gopher";        break;
  58.         case 77:    result = "rje";            break;
  59.         case 79:    result = "finger";        break;
  60.         case 80:    result = "http";        break;
  61.         case 87:    result = "link";        break;
  62.         case 88:    result = "kerberos";    break;
  63.         case 95:    result = "supdup";        break;
  64.         case 98:    result = "linuxconf";    break;
  65.         case 101:    result = "hostnames";    break;
  66.         case 102:    result = "iso-tsap";    break;
  67.         case 103:    result = "x400";        break;
  68.         case 104:    result = "x400-snd";    break;
  69.         case 105:    result = "csnet-ns";    break;
  70.         case 106:    result = "poppassd";    break;
  71.         case 107:    result = "rtelnet";        break;
  72.         case 109:    result = "pop2";        break;
  73.         case 110:    result = "pop3";        break;
  74.         case 111:    result = "sunrpc";        break;
  75.         case 113:    result = "ident";        break;
  76.         case 115:    result = "sftp";        break;
  77.         case 117:    result = "uucp-path";    break;
  78.         case 119:    result = "nntp";        break;
  79.         case 123:    result = "ntp";            break;
  80.         case 137:    result = "netbios-ns";    break;
  81.         case 138:    result = "netbios-dgm";    break;
  82.         case 139:    result = "netbios-ssn";    break;
  83.         case 143:    result = "imap2";        break;
  84.         case 144:    result = "NeWS";        break;
  85.         case 161:    result = "snmp";        break;
  86.         case 162:    result = "snmp-trap";    break;
  87.         case 163:    result = "cmip-man";    break;
  88.         case 164:    result = "cmip-agent";    break;
  89.         case 174:    result = "mailq";        break;
  90.         case 177:    result = "xdmcp";        break;
  91.         case 178:    result = "nextstep";    break;
  92.         case 179:    result = "bgp";            break;
  93.         case 191:    result = "perspero";    break;
  94.         case 194:    result = "irc";            break;
  95.         case 199:    result = "smux";        break;
  96.         case 201:    result = "at-rtmp";        break;
  97.         case 202:    result = "at-nbp";        break;
  98.         case 204:    result = "at-echo";        break;
  99.         case 206:    result = "at-zis";        break;
  100.         case 209:    result = "qmtp";        break;
  101.         case 210:    result = "z3950";        break;
  102.         case 213:    result = "ipx";            break;
  103.         case 220:    result = "imap3";        break;
  104.         case 311:    result = "asip-webadmin";break;
  105.         case 369:    result = "rpc2portmap";    break;
  106.         case 370:    result = "codaauth2";    break;
  107.         case 372:    result = "ulistserv";    break;
  108.         case 376:    result = "nip";            break;
  109.         case 389:    result = "ldap";        break;
  110.         case 427:    result = "slp";            break;
  111.         case 443:    result = "https";        break;
  112.         case 444:    result = "snpp";        break;
  113.         case 458:    result = "appleqtc";    break;
  114.         case 465:    result = "ssmtp";        break;
  115.         case 481:    result = "ph";            break;
  116.         case 487:    result = "saft";        break;
  117.         case 497:    result = "retrospect";    break;
  118.         case 500:    result = "isakmp";        break;
  119.         case 512:    result = "exec/biff";    break;
  120.         case 513:    result = "login/who";    break;
  121.         case 514:    result = "shell/syslog";break;
  122.         case 515:    result = "printer";        break;
  123.         case 517:    result = "talk";        break;
  124.         case 518:    result = "ntalk";        break;
  125.         case 520:    result = "route";        break;
  126.         case 525:    result = "timed";        break;
  127.         case 526:    result = "tempo";        break;
  128.         case 530:    result = "courier";        break;
  129.         case 531:    result = "conference";    break;
  130.         case 532:    result = "netnews";        break;
  131.         case 533:    result = "netwall";        break;
  132.         case 538:    result = "gdomap";        break;
  133.         case 540:    result = "uucp";        break;
  134.         case 541:    result = "rdist";        break;
  135.         case 543:    result = "klogin";        break;
  136.         case 544:    result = "kshell";        break;
  137.         case 545:    result = "appleqtcsrvr";break;
  138.         case 548:    result = "afpovertcp";    break;
  139.         case 549:    result = "kerberos-adm";break;
  140.         case 550:    result = "new-rwho";    break;
  141.         case 556:    result = "remotefs";    break;
  142.         case 560:    result = "rmonitor";    break;
  143.         case 561:    result = "monitor";        break;
  144.         case 563:    result = "nntps";        break;
  145.         case 600:    result = "pcserver";    break;
  146.         case 610:    result = "npmp-local";    break;
  147.         case 611:    result = "npmp-gui";    break;
  148.         case 612:    result = "hmmp-ind";    break;
  149.         case 635:    result = "mount";        break;
  150.         case 636:    result = "ldaps";        break;
  151.         case 640:    result = "pcnfs";        break;
  152.         case 650:    result = "bwnfs";        break;
  153.         case 660:    result = "mac-srvr-admin"; break;
  154.         case 687:    result = "asipregistry";break;
  155.         case 749:    result = "kerberos-adm";break;
  156.         case 750:    result = "kerberos-iv";    break;
  157.         case 751:    result = "kerberos-master";    break;
  158.         case 754:    result = "krb5-prop";    break;
  159.         case 760:    result = "krbupdate";    break;
  160.         case 761:    result = "kpasswd";        break;
  161.         case 765:    result = "webster";        break;
  162.         case 871:    result = "supfilesrv";    break;
  163.         case 901:    result = "swat";        break;    // Sabma Web Admin Tool
  164.         case 989:    result = "ftps-data";    break;
  165.         case 990:    result = "ftps";        break;
  166.         case 992:    result = "telnets";        break;
  167.         case 993:    result = "imaps";        break;
  168.         case 994:    result = "ircs";        break;
  169.         case 995:    result = "pop3s";        break;
  170.         case 1025:    result = "listen";        break;
  171.         case 1026:    result = "nterm";        break;
  172.         case 1080:    result = "socks";        break;
  173.         case 1085:    result = "webobjects";    break;
  174.         case 1109:    result = "kpop";        break;
  175.         case 1127:    result = "supfiledbg";    break;
  176.         case 1236:    result = "rmtcfg";        break;
  177.         case 1313:    result = "xtel";        break;
  178.         case 1381:    result = "apple-licman";break;
  179.         case 1419:    result = "timbuktu-srv3";break;
  180.         case 1420:    result = "chat";        break;
  181.         case 1524:    result = "ingreslock";    break;
  182.         case 1525:    result = "prospero-np";    break;
  183.         case 1529:    result = "support";        break;
  184.         case 1600:    result = "tnet";        break;
  185.         case 1645:    result = "radius";        break;
  186.         case 1646:    result = "radacct";        break;
  187.         case 1812:    result = "radius";        break;
  188.         case 1813:    result = "radacct";        break;
  189.         case 2003:    result = "cfinger";        break;
  190.         case 2049:    result = "nfs";            break;
  191.         case 2053:    result = "knetd";        break;
  192.         case 2102:    result = "zephyr-srv";    break;
  193.         case 2103:    result = "zephyr-clt";    break;
  194.         case 2104:    result = "zephyr-hm";    break;
  195.         case 2105:    result = "eklogin";        break;
  196.         case 2150:    result = "ninstall";    break;
  197.         case 2401:    result = "cvspserver";    break;
  198.         case 2430:    result = "venus";        break;
  199.         case 2431:    result = "venus-se";    break;
  200.         case 2432:    result = "codasrv";        break;
  201.         case 2433:    result = "codasrv-se";    break;
  202.         case 2988:    result = "afbackup";    break;
  203.         case 3130:    result = "icp";            break;
  204.         case 3283:    result = "net-assistant";break;
  205.         case 3306:    result = "mysql";        break;
  206.         case 3762:    result = "combadge";    break;
  207.         case 3276:    result = "combadge";    break;
  208.         case 4321:    result = "fibs";        break;
  209.         case 4444:    result = "krb524";        break;
  210.         case 4557:    result = "fax";            break;
  211.         case 4559:    result = "hylafax";        break;
  212.         case 5000:    result = "chess";        break;
  213.         case 5002:    result = "rfe";            break;
  214.         case 5190:    result = "aol";            break;
  215.         case 5308:    result = "cfengine";    break;
  216.         case 5354:    result = "noclog";        break;
  217.         case 5355:    result = "hostmon";        break;
  218.         case 5432:    result = "postgres";    break;
  219.         case 5498:    result = "hotline-tracker";break;
  220.         case 5500:    result = "hotline";        break;
  221.         case 5501:    result = "hotline-data";break;
  222.         case 6000:    result = "X11";            break;
  223.         case 6250:    result = "mush";        break;
  224.         case 6667:    result = "irc";            break;
  225.         case 6699:    result = "napster-data";break;
  226.         case 6700:    result = "carracho";    break;
  227.         case 6701:    result = "carracho-data";break;
  228.         case 6702:    result = "carracho-tracker";break;
  229.         case 7000:    result = "dos/bbs";        break;
  230.         case 7070:    result = "realaudio";    break;
  231.         case 8080:    result = "webcache";    break;
  232.         case 8081:    result = "tproxy";        break;
  233.         case 8888:    result = "napster-svr";    break;
  234.         case 9359:    result = "mandelspawn";    break;
  235.         case 10080:    result = "amanda";        break;
  236.         case 10081:    result = "kamanda";        break;
  237.         case 10082:    result = "amandaidx";    break;
  238.         case 10083:    result = "amidxtape";    break;
  239.         case 20011:    result = "isdnlog";        break;
  240.         case 20012:    result = "vboxd";        break;
  241.         case 24554:    result = "binkp";        break;
  242.         case 27374:    result = "asp";            break;
  243.         case 60177:    result = "tfido";        break;
  244.         case 60179:    result = "fido";        break;
  245.     }
  246.     
  247.     return result;
  248. }
  249.  
  250. clrscr();
  251.  
  252.  
  253. auto raw_status_data = "";
  254. auto logFile;
  255. auto line;
  256. auto data;
  257.   printf("------------------------------------------------------------------------------\n");
  258.   printf("Protocol  Local Port        Remote IP        Remote Port       Status\n");
  259.   printf("==============================================================================\n");
  260. //printf("          12345             000.000.000.000  12345             TCP_IDLE\n");
  261.  
  262. if (NFGetInternetStatus(TCP_STATUS, &raw_status_data) == 0)
  263. {
  264.     logFile = fopen(outputFilename, "wb");
  265.  
  266.     if (logFile != NULL)
  267.     {
  268.         printf(logFile, raw_status_data);
  269.         close(logFile);
  270.         logFile = fopen(outputFilename, "r");
  271.         
  272.         if (logFile != NULL)
  273.         {
  274. //            printf("------------------------------------------------------------------------------\n");
  275. //            printf("Protocol  Local Port        Remote IP        Remote Port       Status\n");
  276. //            printf("==============================================================================\n");
  277. //            printf("          12345             000.000.000.000  12345             TCP_IDLE\n");
  278.             while (line = getline(logFile), line != NULL)
  279.             {
  280.                 data = line ~~~ TCP_STATUS_REGEXP;
  281.                 if ((data != NULL) && ((data[0] != "000.000.000.000") || (Perl.hex(data[1]) != 0)))
  282.                     printf("tcp       %-17s %-16s %-17s %s\n",
  283.                             PortToEnglishStr(Perl.hex(data[1])),
  284.                             data[0], 
  285.                             PortToEnglishStr(Perl.hex(data[2])),
  286.                             data[3]);
  287.             }
  288.         }
  289.         close(logFile);
  290.     }
  291. }
  292.  
  293. //            printf("------------------------------------------------------------------------------\n\n");
  294. printf("\n");
  295.  
  296. if (NFGetInternetStatus(UDP_STATUS, &raw_status_data) == 0)
  297. {
  298.     logFile = fopen(outputFilename, "wb");
  299.  
  300.     if (logFile != NULL)
  301.     {
  302.         printf(logFile, raw_status_data);
  303.         close(logFile);
  304.         logFile = fopen(outputFilename, "r");
  305.         
  306.         if (logFile != NULL)
  307.         {
  308. //            printf("------------------------------------------------------------------------------\n");
  309. //            printf("Protocol  Local Port        Remote IP        Remote Port       Status\n");
  310. //            printf("==============================================================================\n");
  311. //            printf("          12345             000.000.000.000  12345             TCP_IDLE\n");
  312.  
  313.             while (line = getline(logFile), line != NULL)
  314.             {
  315.                 data = line ~~~ UDP_STATUS_REGEXP;
  316.                 if ((data != NULL) && ((data[3] != "000.000.000.000") || (int(data[0]) != 0)))
  317.                     printf("udp       %-17s %-16s %-17s %s\n",
  318.                             PortToEnglishStr(int(data[0])),
  319.                             data[3], 
  320.                             PortToEnglishStr(int(data[4])),
  321.                             data[5]);
  322.             }
  323. //            printf("------------------------------------------------------------------------------\n\n");
  324.         }
  325.         close(logFile);
  326.     }
  327. }
  328.  
  329. printf("------------------------------------------------------------------------------\n\n");
  330.  
  331.  
  332. //auto result = "";
  333.  
  334. //NFGetInternetStatus(ARP_CACHE_REPORT, &result);
  335. //printf(result);
  336.  
  337. //NFGetInternetStatus(IP_INTERFACE_STATUS, &result);
  338. //printf(result);
  339.  
  340. //NFGetInternetStatus(IP_LINK_STATUS, &result);
  341. //printf(result);
  342.  
  343. //NFGetInternetStatus(IP_ROUTE_STATUS, &result);
  344. //printf(result);
  345.  
  346. //NFGetInternetStatus(IP_ROUTE_STATUS2, &result);
  347. //printf(result);
  348.  
  349. //NFGetInternetStatus(TCP_STATUS, &result);
  350. //printf(result);
  351.  
  352. //NFGetInternetStatus(UDP_STATUS, &result);
  353. //printf(result);
  354.  
  355. //NFNetworkPing("ftp.cdrom.com");
  356. //NFNetworkTraceRoute("ftp.cdrom.com");
  357.